package com.cskaoyan.javase.oop.thiss3;

/**
 * @description: 引入this关键字
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * - 引例
 *   - 创建一个汽车类，有颜色和速度两个属性，行为是可以跑
 *   - 然后在成员方法中调用属性，调用该方法
 *   - 在成员方法的形参列表中，定义和属性同名的局部变量，再次调用该方法
 *
 *   java当中非常重要的一个特性:
 *   就近原则:在java的方法调用中,当有多个同名参数可以选择时,这个时候,方法会选择离他近的
 *
 *   我偏不想让它就近原则,我就想调用成员变量speed
 *
 *   this关键字:
 *   1,对于类中普通成员方法,隐含了一个参数,自动传了一个参数,这个参数就是当前对象,引用的名字是this
 *   this代表当前对象 所以可以在成员方法中使用this关键字调用成员变量
 *   不仅能够调用成员变量,也能够调用成员方法
 *   this关键字可以用来区分成员变量和局部变量
 *
 *
 *
 *   通过this,我们更进一步的理解,什么叫成员方法属于对象?所以没有对象是无法调用成员方法的
 *
 *   关于this我们今天先讲这么多,实际上this有非常多细节,等我们碰到了再讲
 *   this代表当前对象
 *
 *
 */
public class Demo {
    public static void main(String[] args) {
        //创建对象
        //马自达,不仅抖动 还堵车
        Car car = new Car();
        car.speed = 120; //1:100
        car.color = '黑';
        //car.run();
        car.run(180);
        //请大家思考,这里 速度是多少?



    }
}

class Car {
    //属性
    char color;
    double speed;

    //行为
    public void run(double speed) { //隐含了一个this 这个this 代表当前对象
        this.test();
        //输出
        System.out.println("颜色是" + color + "的小汽车嘟嘟嘟的以" + this.speed + "速度跑!");
    }

    public void test(){
        System.out.println("我是test方法");
    }

}
